<?php
 /**
 * Контроллер для работы со списком новостей
 *
 * @version 1.0
 * @author Bondarenko
 * @since 29.11.2012
 */
class Controller_Admin extends Controller
{
    private $msg;

     function __construct()
    {	
    	$this->view = new View();
        $this->model = new Model_Admin();
    }
    /**
     * Отображение списка новостей
     *
     * @version 1.0
     * @author Bondarenko
     * @since 29.11.2012
     */
    public function action_index()
    {
        $data['list_news'] = $this->model->get_list_news();
        $data['breadcrumbs'] = '>>> список новостей';	
        if(!empty($this->msg)){ $data['msg'] = $this->msg; }	
        $this->view->generate('admin/list_news.php', 'admin/template.php', $data);
    }
    /**
     * Удаление новости
     *
     * @version 1.0
     * @author Bondarenko
     * @since 29.11.2012
     * @param $item_id ид удаляемой новости
     */
    public function action_delete_item($item_id)
    {
        $this->model->delete_item($item_id);       
        $this->action_index();
    }
    /**
     * Отображение формы добавления новости
     *
     * @version 1.0
     * @author Bondarenko
     * @since 29.11.2012
     * @param $item_id номер редактируемой новости
     */
    public function action_form_add_item($item_id)
    {
        if(isset($item_id) and intval($item_id) > 0)
        {
           $data['data_news'] = $this->model->get_news($item_id);
           $data['breadcrumbs'] = '>>> список новостей >>> редактирование новости';
           $data['action'] = 'edit';     
        } 
        else
        {
            $data['action'] = 'add';
            $data['breadcrumbs'] = '>>> список новостей >>> добавление новости';        
        }
        if(!empty($this->msg)){ $data['msg'] = $this->msg; }
        $data['categories'] = $this->model->get_list_categories();
        $this->view->generate('admin/form_add_edit.php', 'admin/template.php', $data);
    }
    /**
     * Сохранение или редактирование новости
     *
     * @version 1.0
     * @author Bondarenko
     * @since 30.11.2012
     * @param $item_id номер редактируемой новости
     */
    public function action_save_edit_news($item_id)
    {
         $item_id = intval($item_id);
         $data = array(
                'name' => $_POST['name'],
                'summary_news' => $_POST['sum'],
                'category_id' => $_POST['cat'],
                'body' => $_POST['body'],
                'visibility' => $_POST['vis'],
            );  
         $tags = $_POST['tags'];

        if(isset($_FILES["pict"]))
        {
            //dg($_FILES);
            $image = $_FILES["pict"]["tmp_name"];
            $image_name = $_FILES["pict"]["name"];
            $iamge_size = $_FILES["pict"]["size"];
            $image_type = $_FILES["pict"]["type"];
            $error_flag = $_FILES["pict"]["error"];

            // Если ошибок не было
            if($error_flag == 0)
            {
                // проверяем тип загруженного файла
                $ext = strrchr($image_name,'.');
                if($image_type == "image/jpeg" || $image_type == "image/pjpeg" || $image_type == "image/gif" ||
                   $image_type == "image/x-png" || $image_type == "image/png")
                {
                    $new_name_image = "image_".time().$ext;  
                    $upfile = UPLOAD_DIR.$new_name_image;
                    if ($_FILES['pict']['tmp_name'])
                    {         
                        //Если не удалось загрузить файл
                        if (!move_uploaded_file($_FILES['pict']['tmp_name'], $upfile))
                        {
                            echo "Ошибка при загрузке файла";
                            exit;
                        } else {
                            $data['pict'] = $new_name_image;
                        }
                    }
                } 
                else 
                {
                    echo "неправильный формат изображения! используйте: *.gif, *.jpg, *.png!";
                    exit;    
                }  
            }
        }
            
         if(empty($data['name']) 
            or empty($data['summary_news'])  
            or empty($data['body']))
        {
         $this->msg = "Вы заполнили не все поля";
         $this->action_form_add_item($item_id);
        } 
        else 
        {
            if(!empty($item_id) AND $item_id > 0)
            {
                $this->model->save_news_data($item_id,$data);
                $this->msg = "Новость изменена";
            } else {
                $item_id = $this->model->save_news_data(0,$data);
                $this->msg = "Новость добавлена";               
            }
             $this->model->save_tags($item_id,$tags);
             $this->action_index();
        }
    }
}
?>